/**
 * @author tongchen
 * @create 2023-02-04 19:51
 */
public class BinarySearch {
    /**
     * 二分查找的递归实现：重复的地方在于我们对于一个有界限的数组而言，我们都是比较其中的中间值并不断缩小范围，当界限不存在时（end<begin）
     * 这时就是递归终止
     * @param arr
     * @param begin
     * @param end
     * @return
     */
    public static int binarySearch(int[]arr,int begin,int end,int aim){
        //界限
        if(begin>end){
            return -1;
        }
        int mid=begin+((end-begin)>>1);
        if(aim<arr[mid]){
          return  binarySearch(arr, begin, mid-1, aim);
        }
        else if(aim>arr[mid]){
         return  binarySearch(arr, mid+1, end, aim);
        }
        else {
            return mid;
        }
    }

    public static void main(String[] args) {
        int[]arr={1,2,3,4,5,6};
        System.out.println(binarySearch(arr, 0, arr.length - 1, 7));
    }
}
